Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the communication (e.g., the exchange of electronic messages) between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
It is common for many computerized tasks to utilize data from multiple different sources. Unfortunately, data from different sources presents itself according to widely varying data models (structural constraints, schema/type systems, absence or presence of associated behaviors, update semantics, etc.). Thus, to draw on data from different sources, operate on synthesized data obtained from the different sources, react to updates to data from the different sources, and propagate change requests to the data at the different sources, applications are typically configured to interoperate with a variety of different data types and data formats.
However, using various different data types and different data formats native to different applications can make the joining together of data from different applications, for example, into a data type and data format native to yet another application, difficult. Often, this results in software applications that are designed to work only with a specific type of data, data format or schema.
For instance, database applications designed to interact with an information database may differ in their capabilities. Specific database applications are generally designed to interact with databases using some type of fixed schema. Specific database applications can use object-relational mapping (ORM) and strong-typing when accessing information stored in the relational database. When changes are made to the schema used by the specific database application, however, the application has to be restarted, updated, recompiled and redeployed in order to implement the changes. On the flipside, generic database applications are not designed to use a particular schema when interacting with the relational database. Rather, generic applications can use a variety of different schemas to access information, as generic database applications are typically developed without a specific awareness of a given schema. As such, generic database applications typically do not implement or make use of strong-typed ORM technologies to access information stored in the relational database.